gdk/x11: Drop motion/button events emulated from touch
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 29 May 2017 10:16:21 +0000 (12:16 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 19 Sep 2017 16:39:03 +0000 (18:39 +0200)
We now always listen to touch events. Just avoid delivering both
types of events.

gdk/x11/gdkdevicemanager-xi2.c

index 20cb4f4cbd8d991dc670158a74927c8a9100a9ff..36e3e02da71a3eb8f1fbd936fa15bc6ee9fcdc35 100644 (file)
@@ -1582,6 +1582,10 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
           }
         else
           {
+#ifdef XINPUT_2_2
+            if (xev->flags & XIPointerEmulated)
+              return FALSE;
+#endif
             event->button.type = (ev->evtype == XI_ButtonPress) ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE;
 
             event->button.window = window;
@@ -1621,11 +1625,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
             event->button.button = xev->detail;
           }
 
-#ifdef XINPUT_2_2
-        if (xev->flags & XIPointerEmulated)
-          gdk_event_set_pointer_emulated (event, TRUE);
-#endif
-
         if (return_val == FALSE)
           break;
 
@@ -1697,6 +1696,11 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
             break;
           }
 
+#ifdef XINPUT_2_2
+        if (xev->flags & XIPointerEmulated)
+          return FALSE;
+#endif
+
         event->motion.type = GDK_MOTION_NOTIFY;
         event->motion.window = window;
         event->motion.time = xev->time;
@@ -1712,11 +1716,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
 
         event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
 
-#ifdef XINPUT_2_2
-        if (xev->flags & XIPointerEmulated)
-          gdk_event_set_pointer_emulated (event, TRUE);
-#endif
-
         /* There doesn't seem to be motion hints in XI */
         event->motion.is_hint = FALSE;